/msteams
Interact with Microsoft Teams — send and read messages, search conversations, look up people, check calendar, get meeting transcripts, and manage chats. Use this skill whenever the user mentions Teams, MS Teams, Microsoft Teams, wants to send a message, read chat history, search
$ npx -y skills add sigcli/sigcli --skill msteams --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/msteams
Context preview
The summary Claude sees to decide when to auto-load this skill.
Interact with Microsoft Teams — send and read messages, search conversations, look up people, check calendar, get meeting transcripts, and manage chats. Use this skill whenever the user mentions Teams, MS Teams, Microsoft Teams, wants to send a message, read chat history, search
SKILL.md
msteams.SKILL.mdname: msteams
description: 'Interact with Microsoft Teams — send and read messages, search conversations, look up people, check calendar, get meeting transcripts, and manage chats. Use this skill whenever the user mentions Teams, MS Teams, Microsoft Teams, wants to send a message, read chat history, search conversations, look up a colleague, check their calendar, find meeting recordings or transcripts, see direct reports or manager, or do anything involving Teams communication. Also trigger when the user asks about scheduling, org chart, people search, or wants to message someone.'
Microsoft Teams
Send and read messages, search conversations, look up people, check calendar, get meeting transcripts, and manage chats via Microsoft Teams.
Setup (run FIRST — every time, before any operation)
You MUST complete this setup before running any script. Do NOT skip this step.
sig status ms-teams 2>&1
sig status ms-graph 2>&1
Check the JSON output fields `configured` and `valid` for BOTH providers:
- **`configured: false`** → run Provider Setup below. Do NOT proceed without completing it.
- **`valid: false` (but configured: true)** → run `sig login ms-teams`, then re-check.
- **`valid: true`** → detect proxy (see below), then execute the user's request.
Provider Setup
1. Read `<SKILL_DIR>/references/provider-config.yaml` 2. Append BOTH provider blocks (`ms-teams` and `ms-graph`) to `~/.sig/config.yaml` under `providers:` 3. Ask the user: "Do you need a proxy to access this site?" — if yes, add `networkProxy: <url>` under each provider in config.yaml 4. Run `sig login ms-teams` (with `--network-proxy <url>` if proxy was specified) — this covers both providers 5. Verify: run `sig status ms-teams` and `sig status ms-graph` again — both must show `valid: true` before proceeding
Proxy Detection (after provider is valid)
grep -A15 "^\s*ms-teams:" ~/.sig/config.yaml | grep networkProxy | awk '{print $2}'If this outputs a URL, prefix ALL python3 commands with `HTTPS_PROXY=<url> HTTP_PROXY=<url>`. If using socks5, convert to socks5h for python (e.g. `socks5://...` → `socks5h://...`). If empty, no proxy needed.
Running Scripts
All scripts require setup to be completed first (see above).
User Profile & Region Configuration
**Before using this skill**, check `memory/user-profile.md` for the user's stored profile (name, email, region, etc.). See `CLAUDE.md` for details.
All scripts support a `--region` parameter for the Teams Chat API regional endpoint. Resolution order:
1. Stored region from `memory/user-profile.md` 2. `--region` CLI argument (if provided) 3. `TEAMS_REGION` environment variable 4. Default: `apac`
Common regions: `apac`, `emea`, `amer`.
**Region:** If the region is not in `memory/user-profile.md` or the env var, ask the user once, then store it immediately in `memory/user-profile.md`.
**Profile enrichment:** When you call `teams_people.py --action profile` (or Graph `/me`), persist the user's name, email, and I-number to `memory/user-profile.md` so other skills can use them without re-querying.
Scripts Reference
All scripts are in this skill's `scripts/` directory. Run via Bash tool.
| Script | Purpose | Token(s) | | ------------------------ | ---------------------------------------- | ------------ | | `teams_conversations.py` | List/search conversations | Chat | | `teams_messages.py` | Get messages from a conversation | Chat | | `teams_send.py` | Send message or threaded reply | Chat | | `teams_chat.py` | Find 1:1 chat or create group chat | Chat + Graph | | `teams_members.py` | Get conversation members | Chat + Graph | | `teams_meetings.py` | Get recordings and transcripts | Chat | | `teams_calendar.py` | Get calendar events | Graph | | `teams_people.py` | Search people, manager, reports, profile | Graph |
teams_conversations.py
--token TOKEN Chat API token (required)
--search TEXT Filter by topic, participant, or content
--limit N Max conversations (default: 20)
--since ISO_DATE Only conversations after this time
--until ISO_DATE Only conversations before this time
--region REGION Teams region (default: $TEAMS_REGION or 'apac')
teams_messages.py
--token TOKEN Chat API token (required)
--conversation-id ID Conversation ID (required)
--search TEXT Filter messages by content
--limit N Max messages (default: 20, use 50+ for summarization)
--since ISO_DATE Only messages after this time
--until ISO_DATE Only messages before this time
--region REGION Teams region (default: $TEAMS_REGION or 'apac')
teams_send.py
--token TOKEN Chat API token (required)
--conversation-id ID Conversation ID (required)
--message TEXT Message content (required)
--format FORMAT "html" (default) or "markdown"
--parent-message-id ID Parent message ID (for threaded replies)
--region REGION Teams region (default: $TEAMS_REGION or 'apac')
teams_chat.py
--token TOKEN Chat API token (required)
--graph-token TOKEN Graph API token (required)
--query TEXT Person name/email (finds 1:1 chat)
--members GUIDS Comma-separated user GUIDs (creates group chat)
--topic TEXT Group chat topic (optional)
--region REGION Teams region (default: $TEAMS_REGION or 'apac')
teams_members.py
--token TOKEN Chat API token (required)
--graph-token TOKEN Graph API token (for name resolution, optional)
--conversation-id ID Conversation ID (required)
--region REGION Teams region (default: $TEAMS_REGION or 'apac')
teams_meetings.py
--token TOKEN Chat API token (required)
--
Read more
name: msteams description: 'Interact with Microsoft Teams — send and read messages, search conversations, look up people, check calendar, get meeting transcripts, and manage chats. Use this skill whenever the user mentions Teams, MS Teams, Microsoft Teams, wants to send a message, read chat history, search conversations, look up a colleague, check their calendar, find meeting recordings or transcripts, see direct reports or manager, or do anything involving Teams communication. Also trigger when the user asks about scheduling, org chart, people search, or wants to message someone.'
Microsoft Teams
Send and read messages, search conversations, look up people, check calendar, get meeting transcripts, and manage chats via Microsoft Teams.
Setup (run FIRST — every time, before any operation)
You MUST complete this setup before running any script. Do NOT skip this step.
sig status ms-teams 2>&1 sig status ms-graph 2>&1
Check the JSON output fields `configured` and `valid` for BOTH providers:
- **`configured: false`** → run Provider Setup below. Do NOT proceed without completing it.
- **`valid: false` (but configured: true)** → run `sig login ms-teams`, then re-check.
- **`valid: true`** → detect proxy (see below), then execute the user's request.
Provider Setup
1. Read `<SKILL_DIR>/references/provider-config.yaml` 2. Append BOTH provider blocks (`ms-teams` and `ms-graph`) to `~/.sig/config.yaml` under `providers:` 3. Ask the user: "Do you need a proxy to access this site?" — if yes, add `networkProxy: <url>` under each provider in config.yaml 4. Run `sig login ms-teams` (with `--network-proxy <url>` if proxy was specified) — this covers both providers 5. Verify: run `sig status ms-teams` and `sig status ms-graph` again — both must show `valid: true` before proceeding
Proxy Detection (after provider is valid)
grep -A15 "^\s*ms-teams:" ~/.sig/config.yaml | grep networkProxy | awk '{print $2}'If this outputs a URL, prefix ALL python3 commands with `HTTPS_PROXY=<url> HTTP_PROXY=<url>`. If using socks5, convert to socks5h for python (e.g. `socks5://...` → `socks5h://...`). If empty, no proxy needed.
Running Scripts
All scripts require setup to be completed first (see above).
User Profile & Region Configuration
**Before using this skill**, check `memory/user-profile.md` for the user's stored profile (name, email, region, etc.). See `CLAUDE.md` for details.
All scripts support a `--region` parameter for the Teams Chat API regional endpoint. Resolution order:
1. Stored region from `memory/user-profile.md` 2. `--region` CLI argument (if provided) 3. `TEAMS_REGION` environment variable 4. Default: `apac`
Common regions: `apac`, `emea`, `amer`.
**Region:** If the region is not in `memory/user-profile.md` or the env var, ask the user once, then store it immediately in `memory/user-profile.md`.
**Profile enrichment:** When you call `teams_people.py --action profile` (or Graph `/me`), persist the user's name, email, and I-number to `memory/user-profile.md` so other skills can use them without re-querying.
Scripts Reference
All scripts are in this skill's `scripts/` directory. Run via Bash tool.
| Script | Purpose | Token(s) | | ------------------------ | ---------------------------------------- | ------------ | | `teams_conversations.py` | List/search conversations | Chat | | `teams_messages.py` | Get messages from a conversation | Chat | | `teams_send.py` | Send message or threaded reply | Chat | | `teams_chat.py` | Find 1:1 chat or create group chat | Chat + Graph | | `teams_members.py` | Get conversation members | Chat + Graph | | `teams_meetings.py` | Get recordings and transcripts | Chat | | `teams_calendar.py` | Get calendar events | Graph | | `teams_people.py` | Search people, manager, reports, profile | Graph |
teams_conversations.py
--token TOKEN Chat API token (required) --search TEXT Filter by topic, participant, or content --limit N Max conversations (default: 20) --since ISO_DATE Only conversations after this time --until ISO_DATE Only conversations before this time --region REGION Teams region (default: $TEAMS_REGION or 'apac')
teams_messages.py
--token TOKEN Chat API token (required) --conversation-id ID Conversation ID (required) --search TEXT Filter messages by content --limit N Max messages (default: 20, use 50+ for summarization) --since ISO_DATE Only messages after this time --until ISO_DATE Only messages before this time --region REGION Teams region (default: $TEAMS_REGION or 'apac')
teams_send.py
--token TOKEN Chat API token (required) --conversation-id ID Conversation ID (required) --message TEXT Message content (required) --format FORMAT "html" (default) or "markdown" --parent-message-id ID Parent message ID (for threaded replies) --region REGION Teams region (default: $TEAMS_REGION or 'apac')
teams_chat.py
--token TOKEN Chat API token (required) --graph-token TOKEN Graph API token (required) --query TEXT Person name/email (finds 1:1 chat) --members GUIDS Comma-separated user GUIDs (creates group chat) --topic TEXT Group chat topic (optional) --region REGION Teams region (default: $TEAMS_REGION or 'apac')
teams_members.py
--token TOKEN Chat API token (required) --graph-token TOKEN Graph API token (for name resolution, optional) --conversation-id ID Conversation ID (required) --region REGION Teams region (default: $TEAMS_REGION or 'apac')
teams_meetings.py
--token TOKEN Chat API token (required) --
Sign in your way. AI works on your behalf. AI agents need access to your work systems — Jira, wikis, calendars, internal APIs. But passing credentials through shell history, environment variables, and agent context windows is a security nightmare.

