Agent skill

Msteams

by sigcli in sigcli/sigcli

Interact with Microsoft Teams — send and read messages, search conversations, look up people, check calendar, get meeting transcripts, and manage chats.

MITAuto-check passedSecurity

Install Msteams

skills CLI
$ npx skills add sigcli/sigcli --skill msteams -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install sigcli/sigcli msteams --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/sigcli/sigcli.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/msteams .claude/skills/msteams && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
msteams
GitHub stars
293
Token cost
~2.7k tokens
SKILL.md length
777 words
Files
20 (incl. scripts, references)
Skills in repo
15
Repo updated
First seen
Licence
MIT

At a glance

Interact with Microsoft Teams — send and read messages, search conversations, look up people, check calendar, get meeting transcripts, and manage chats.

  • Works in 5 steps: Read /references/provider-config.yaml → Append BOTH provider blocks (ms-teams… → Ask the user: "Do you need a proxy to… → …
  • The user mentions Teams
  • SKILL.md covers Setup (run FIRST — every time,…, Running Scripts, User Profile & Region… and Scripts Reference, plus 4 more sections
  • Runs Python scripts from its folder; needs SIG_MS_TEAMS_ACCESS_TOKEN and SIG_MS_GRAPH_ACCESS_TOKEN

What it does

Msteams is an agent skill from sigcli/sigcli. 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…

Its SKILL.md is about 2.7k tokens, which your agent loads only when the skill is triggered. The skill folder holds 22 other files, including scripts and reference files (for example `references/messaging-guide.md`, `references/provider-config.yaml` and `scripts/teams_calendar.py`).

It sits in Security, covering OSINT. It works with Microsoft Teams. The repository describes itself as: The authentication CLI & Proxy for AI agents. Give agents access, not your credentials. The licence is MIT.

When your agent uses it

  • The user mentions Teams
  • Microsoft Teams
  • Wants to send a message
  • Read chat history

Example prompts

  • “/msteams”

Requirements

  • Python 3
  • A credential in SIG_MS_TEAMS_ACCESS_TOKEN
  • A credential in SIG_MS_GRAPH_ACCESS_TOKEN

Workflow steps

5 steps, taken from the first numbered list in SKILL.md.

  1. Read /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: under each provider in config.yaml
  4. Run sig login ms-teams (with --network-proxy 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

What it can do on your machine

Read from SKILL.md and the folder at commit 9ba8b35. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships 9 files in scripts/ (Python, from the files we listed), which the agent can run.

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • SIG_MS_TEAMS_ACCESS_TOKEN
    • SIG_MS_GRAPH_ACCESS_TOKEN

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Msteams loads about 2.7k tokens when it runs, and up to ~4.2k if it reads all its reference files. Until then it costs about 142 tokens; SKILL.md has 777 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~142
When it runs · the whole SKILL.md, loaded when a task matches
~2.7k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~4.2k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.

SKILL.md

The full file from sigcli/sigcli at commit 9ba8b35, republished under its MIT licence (© sigcli). 777 words, ~2,735 tokens.

Download SKILL.mdSave it as .claude/skills/msteams/SKILL.md (or your agent's skills folder). This skill also uses 19 other files; get the full folder from GitHub.
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.

bash
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)
bash
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.

ScriptPurposeToken(s)
teams_conversations.pyList/search conversationsChat
teams_messages.pyGet messages from a conversationChat
teams_send.pySend message or threaded replyChat
teams_chat.pyFind 1:1 chat or create group chatChat + Graph
teams_members.pyGet conversation membersChat + Graph
teams_meetings.pyGet recordings and transcriptsChat
teams_calendar.pyGet calendar eventsGraph
teams_people.pySearch people, manager, reports, profileGraph
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)
--conversation-id ID   List recordings in conversation
--transcript-url URL   Fetch transcript content (Teams AMS URL only)
--region REGION        Teams region (default: $TEAMS_REGION or 'apac')
teams_calendar.py
--graph-token TOKEN    Graph API token (required)
--range RANGE          "today", "week", or "month"
--start ISO_DATE       Custom start date (alternative to --range)
--end ISO_DATE         Custom end date (use with --start)
--limit N             Max events (default: 50)
teams_people.py
--graph-token TOKEN    Graph API token (required)
--action ACTION        "search" (default), "manager", "reports", or "profile"
--query TEXT           Search query (required for search action)
--limit N             Max results (default: 10)
--enrich              Fetch extra details (I-number, city, country)

Message Formatting

When sending messages, use --format html (default) for rich formatting:

html
<b>Bold</b>, <i>Italic</i>, <a href="url">Link</a>
<ul>
    <li>Item</li>
</ul>
,
<ol>
    <li>Item</li>
</ol>
<pre>Code block</pre>
, <code>Inline code</code>

Or --format markdown for Teams markdown:

**bold**, _italic_, ~~strikethrough~~
`code`, [link](url), - bullet, 1. numbered

See references/messaging-guide.md for complete formatting reference.

Key Concepts

Conversation IDs — Unique identifiers for chats/channels. Format varies by type:

  • 1:1 chat: 19:{guid1}_{guid2}@unq.gbl.spaces
  • Group/channel: 19:{hash}@thread.tacv2

User GUIDs — Microsoft 365 user identifiers (e.g., abc12345-def6-7890-...). Get from teams_people.py --action search.

Transcript URLs — Only Teams AMS URLs (asyncgw.teams.microsoft.com) work with the Chat API token. SharePoint URLs require different auth.

Time parameters — All use ISO 8601: 2025-01-15 or 2025-01-15T09:00:00Z.

Show full SKILL.md (299 more words)Show less

Error Handling

ErrorCauseFix
401 UnauthorizedToken expiredAuto-run sig login (no user prompt needed), retry
403 ForbiddenNo access to conversationUser lacks permission
404 Not foundInvalid conversation IDCheck ID format, conversation may not exist
NOT_FOUND (people)No user matching queryTry a more specific name or email
MISSING_ARGSRequired arguments missingCheck script --help for required args
Multiple candidatesAmbiguous people searchAsk user to specify more precisely

Workflow Examples

Send a message to someone
  1. Find their chat:
    bash
    sig run ms-teams ms-graph -- bash -c 'python scripts/teams_chat.py --token "$SIG_MS_TEAMS_ACCESS_TOKEN" --graph-token "$SIG_MS_GRAPH_ACCESS_TOKEN" --query "John Smith" --region apac'
  2. Send: sig run ms-teams -- bash -c 'python scripts/teams_send.py --token "$SIG_MS_TEAMS_ACCESS_TOKEN" --conversation-id "$CONV_ID" --message "Hello!" --region apac'
Summarize a conversation
  1. Search: sig run ms-teams -- bash -c 'python scripts/teams_conversations.py --token "$SIG_MS_TEAMS_ACCESS_TOKEN" --search "project standup"'
  2. Get messages: sig run ms-teams -- bash -c 'python scripts/teams_messages.py --token "$SIG_MS_TEAMS_ACCESS_TOKEN" --conversation-id "$CONV_ID" --limit 50'
  3. Summarize the returned messages
Get a meeting transcript
  1. Find recordings: sig run ms-teams -- bash -c 'python scripts/teams_meetings.py --token "$SIG_MS_TEAMS_ACCESS_TOKEN" --conversation-id "$CONV_ID"'
  2. Fetch transcript: sig run ms-teams -- bash -c 'python scripts/teams_meetings.py --token "$SIG_MS_TEAMS_ACCESS_TOKEN" --transcript-url "$AMS_URL"'
Check today's calendar
  1. sig run ms-graph -- bash -c 'python scripts/teams_calendar.py --graph-token "$SIG_MS_GRAPH_ACCESS_TOKEN" --range today'
Look up a colleague
  1. sig run ms-graph -- bash -c 'python scripts/teams_people.py --graph-token "$SIG_MS_GRAPH_ACCESS_TOKEN" --action search --query "Jane Doe" --enrich'
Check org chart
  1. Manager: sig run ms-graph -- bash -c 'python scripts/teams_people.py --graph-token "$SIG_MS_GRAPH_ACCESS_TOKEN" --action manager'
  2. Reports: sig run ms-graph -- bash -c 'python scripts/teams_people.py --graph-token "$SIG_MS_GRAPH_ACCESS_TOKEN" --action reports'
Reply to a message in a thread
  1. Get messages to find the parent message ID: sig run ms-teams -- bash -c 'python scripts/teams_messages.py --token "$SIG_MS_TEAMS_ACCESS_TOKEN" --conversation-id "$CONV_ID" --limit 10'
  2. Reply: sig run ms-teams -- bash -c 'python scripts/teams_send.py --token "$SIG_MS_TEAMS_ACCESS_TOKEN" --conversation-id "$CONV_ID" --parent-message-id "$MSG_ID" --message "Thanks!"'

© sigcli, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 19 other files (scripts, references) in skills/msteams of sigcli/sigcli.

  • SKILL.md
  • references/messaging-guide.md
  • references/provider-config.yaml
  • scripts/requirements.txt
  • scripts/teams_calendar.py
  • scripts/teams_chat.py
  • scripts/teams_conversations.py
  • scripts/teams_meetings.py
  • scripts/teams_members.py
  • scripts/teams_messages.py
  • scripts/teams_people.py
  • scripts/teams_send.py
  • tests/test_teams_calendar.py
  • tests/test_teams_chat.py
  • tests/test_teams_conversations.py
  • tests/test_teams_meetings.py
  • tests/test_teams_members.py
  • tests/test_teams_messages.py
  • … and 2 more

Open the folder on GitHubat commit 9ba8b35

Compare with similar skills

Msteams next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Msteams compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Msteams this skillsigcli/sigcli293—~2.7kAutomated safety check: PassMIT
Metabigor OSINT Reconj3ssie/metabigor1.8k—~2.4kAutomated safety check: PassMIT
Ctf Osintljagiello/ctf-skills3.4k2 repos~2.3kAutomated safety check: NotesMIT
ShadowBroker Intelligence ClientBigBodyCobain/Shadowbroker11k—~8.9kAutomated safety check: WarnAGPL-3.0
Awesome Osint Operatorshoyann/RZK-The-Hunter140—~4.8kAutomated safety check: PassCC-BY-SA-4.0
Run Claude Osintelementalsouls/Claude-OSINT2.8k—~1.2kAutomated safety check: PassMIT

Similar skills

  • Metabigor OSINT Recon

    j3ssie/metabigor

    Operates the metabigor CLI to map a target's network ranges, subdomains, ports, related domains, CDNs and archived URLs from free sources without API keys.

    1.8k GitHub stars~2.4k tokensUpdated 2 mo ago
    SecurityAuto-check passed
  • Ctf Osint

    ljagiello/ctf-skills

    Provides open source intelligence techniques for CTF challenges.

    3.4k GitHub starsUsed in 2 repos~2.3k tokens
    SecurityAuto-check: notes
  • ShadowBroker Intelligence Client

    BigBodyCobain/Shadowbroker

    Lets an agent query a ShadowBroker OSINT platform for tracked flights, ships, satellites and news, and place its findings on the map as intel pins.

    11k GitHub stars~8.9k tokensUpdated yesterday
    SecurityAuto-check: warnings
  • Awesome Osint Operator

    shoyann/RZK-The-Hunter

    Ethical, evidence-first OSINT planning, tool selection, verification, monitoring, reporting, and guarded official wanted/fugitive-person location intelligence using a structured catalog adapted from…

    140 GitHub stars~4.8k tokensUpdated 16 days ago
    SecurityAuto-check passed
  • Run Claude Osint

    elementalsouls/Claude-OSINT

    Build, validate, and run the claude-osint skills repo — check SKILL.md frontmatter, run the secretscan.py and h1reference.py helpers, run sync-skill-content.sh, run the smoke test.

    2.8k GitHub stars~1.2k tokensUpdated 1 mo ago
    SecurityAuto-check passed
  • Osint

    smixs/osint-skill

    Conduct deep OSINT research on individuals. An agent skill from smixs/osint-skill.

    140 GitHub stars~5.5k tokensUpdated 7 mo ago
    SecurityAuto-check passed

More from sigcli/sigcli

All 15 skills in this repo
  • Bilibili

    sigcli/sigcli

    Interact with Bilibili (B站) — browse trending videos, view video details, read comments, search videos and users, view user profiles, like, coin, and favorite videos.

    293 GitHub stars~2.8k tokensUpdated 9 days ago
    Auto-check passed
  • Hackernews

    sigcli/sigcli

    Interact with Hacker News (news.ycombinator.com) — browse top, new, and best stories, read item details and comment threads, look up user profiles, and search posts via Algolia.

    293 GitHub stars~2k tokensUpdated 9 days ago
    Auto-check passed
  • Linkedin

    sigcli/sigcli

    Interact with LinkedIn — view your profile, browse other profiles, read the feed, search jobs/posts/people, get job details, create posts, like/unlike posts, comment, send connection requests, and…

    293 GitHub stars~3.1k tokensUpdated 9 days ago
    Auto-check passed
  • Outlook

    sigcli/sigcli

    Interact with Outlook email — read inbox, send emails, search messages, reply/forward, manage folders, download attachments.

    293 GitHub stars~2.6k tokensUpdated 9 days ago
    Auto-check passed
  • Reddit

    sigcli/sigcli

    Interact with Reddit — browse subreddits, read posts and comments, search content, view user profiles, post comments, vote, save posts, subscribe to subreddits.

    293 GitHub stars~3.1k tokensUpdated 9 days ago
    Auto-check passed
  • Slack

    sigcli/sigcli

    Interact with Slack — read channels, search messages, check unreads, send messages, manage reactions, and look up users.

    293 GitHub stars~2.1k tokensUpdated 9 days ago
    Auto-check passed

Works with

Categories

Questions about Msteams

What does Msteams do?

Interact with Microsoft Teams — send and read messages, search conversations, look up people, check calendar, get meeting transcripts, and manage chats. Msteams is an agent skill from sigcli/sigcli. Interact with Microsoft Teams — send and read messages, search conversations, look up people, check calendar, get meeting transcripts, and manage chats.

When should I use Msteams?

Msteams fits situations like: the user mentions Teams; microsoft Teams; wants to send a message; read chat history.

How do I install Msteams in Claude Code?

Run `npx skills add sigcli/sigcli --skill msteams -a claude-code`. Or copy the skill folder (skills/msteams in sigcli/sigcli) into .claude/skills/msteams in your project. Claude Code loads it when a task matches its description.

How do I install Msteams in Codex?

Run `npx skills add sigcli/sigcli --skill msteams -a codex`. Or copy the skill folder (skills/msteams in sigcli/sigcli) into .agents/skills/msteams in your project. Codex loads it when a task matches its description.

Can I use Msteams in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add sigcli/sigcli --skill msteams -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/msteams, .gemini/skills/msteams, .github/skills/msteams and .opencode/skills/msteams in your project.

What does Msteams need to run?

Going by SKILL.md and its folder, Msteams needs Python for the scripts in its folder and credentials named SIG_MS_TEAMS_ACCESS_TOKEN and SIG_MS_GRAPH_ACCESS_TOKEN. Our summary lists: Python 3; A credential in SIG_MS_TEAMS_ACCESS_TOKEN; A credential in SIG_MS_GRAPH_ACCESS_TOKEN.

Does Msteams access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Msteams safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Msteams use?

Msteams is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Msteams use?

About 2.7k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 1.4k tokens, read only when the agent opens those files.

What are the alternatives to Msteams?

Skills that share tags, products or a category with Msteams: Metabigor OSINT Recon (j3ssie/metabigor, 1.8k stars), Ctf Osint (ljagiello/ctf-skills, 3.4k stars), ShadowBroker Intelligence Client (BigBodyCobain/Shadowbroker, 11k stars) and Awesome Osint Operator (shoyann/RZK-The-Hunter, 140 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Msteams?

sigcli (a GitHub organization) maintains it in sigcli/sigcli, which has 293 GitHub stars. The repository holds 15 skills in this directory. The repository was last updated on September 28, 2026.

Source: sigcli/sigcli on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.