Agent skill

Outlook

by sigcli in sigcli/sigcli

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

MITAuto-check passedProductivity & Automation

Install Outlook

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

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

GitHub CLI
$ gh skill install sigcli/sigcli outlook --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/outlook .claude/skills/outlook && 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
outlook
GitHub stars
293
Used in
1 other repo
Token cost
~2.6k tokens
SKILL.md length
738 words
Files
19 (incl. scripts, references)
Skills in repo
15
Repo updated
First seen
Licence
MIT

At a glance

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

  • Works in 5 steps: Read /references/provider-config.yaml → Append the provider block to… → Ask the user: "Do you need a proxy to… → …
  • The user mentions email
  • SKILL.md covers Sending Emails — Draft Mode, Setup (run FIRST — every time,…, Running Scripts and Scripts Reference, plus 5 more sections
  • Runs Python scripts from its folder; needs SIG_MS_GRAPH_ACCESS_TOKEN

What it does

Outlook is an agent skill from sigcli/sigcli. Interact with Outlook email — read inbox, send emails, search messages, reply/forward, manage folders, download attachments. Use this skill whenever the user mentions email, Outlook, inbox, mail, send email, check email, unread messages, email search, attachments, reply to email, forward email, 邮件, 收件箱, or wants to read, send, search, reply to, forward, or manage emails.

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

It sits in Productivity & Automation, covering Email management and Email writing. It works with Microsoft Outlook. 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 email
  • Unread messages

Example prompts

  • “/outlook”

Requirements

  • Python 3
  • 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 the provider block to ~/.sig/config.yaml under providers
  3. Ask the user: "Do you need a proxy to access this site?" — if yes, add networkProxy: under the provider in config.yaml
  4. Run sig login ms-graph (with --network-proxy if proxy was specified)
  5. Verify: run sig status ms-graph again — 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_GRAPH_ACCESS_TOKEN

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

Context cost

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

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

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). 738 words, ~2,557 tokens.

Download SKILL.mdSave it as .claude/skills/outlook/SKILL.md (or your agent's skills folder). This skill also uses 18 other files; get the full folder from GitHub.
name
outlook
description
Interact with Outlook email — read inbox, send emails, search messages, reply/forward, manage folders, download attachments. Use this skill whenever the user mentions email, Outlook, inbox, mail, send email, check email, unread messages, email search, attachments, reply to email, forward email, 邮件, 收件箱, or wants to read, send, search, reply to, forward, or manage emails.

Outlook Email

Read, search, and manage emails via Microsoft Graph API.

Sending Emails — Draft Mode

The Graph API token lacks Mail.Send scope (your organization's Azure AD policy), so sending is done via draft creation:

  • outlook_send.py creates a draft in Drafts folder — user clicks Send in Outlook
  • outlook_reply.py creates a reply/forward draft — user clicks Send in Outlook
  • The draft's webLink opens directly in Outlook Web for quick sending

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-graph 2>&1

Check the JSON output fields configured and valid:

  • configured: false → run Provider Setup below. Do NOT proceed without completing it.
  • valid: false (but configured: true) → run sig login ms-graph, 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 the provider block 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 the provider in config.yaml
  4. Run sig login ms-graph (with --network-proxy <url> if proxy was specified)
  5. Verify: run sig status ms-graph again — must show valid: true before proceeding
Proxy Detection (after provider is valid)
bash
grep -A15 "^\s*ms-graph:" ~/.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).

Scripts Reference

All scripts are in this skill's scripts/ directory. Run via Bash tool.

ScriptPurposeToken
outlook_folders.pyList mail foldersGraph
outlook_messages.pyList messages from a folderGraph
outlook_read.pyRead full message by IDGraph
outlook_search.pySearch emails with KQLGraph
outlook_send.pySend a new emailGraph
outlook_reply.pyReply/ReplyAll/ForwardGraph
outlook_manage.pyMark read/unread, move, delete, flagGraph
outlook_attachments.pyList/download attachmentsGraph
outlook_folders.py
--graph-token TOKEN       Graph API Bearer token (required)
--include-children        Also list child folders (flag)
outlook_messages.py
--graph-token TOKEN       Graph API Bearer token (required)
--folder FOLDER           Folder name or ID (default: Inbox)
--limit N                 Max messages (default: 20, max: 50)
--since ISO_DATE          Only messages after this date
--until ISO_DATE          Only messages before this date
--unread-only             Only show unread messages (flag)

Well-known folder names: Inbox, SentItems, Drafts, DeletedItems, Archive, JunkEmail.

outlook_read.py
--graph-token TOKEN       Graph API Bearer token (required)
--message-id ID           Message ID (required)
--format FORMAT           "text" (default) or "html"
outlook_search.py
--graph-token TOKEN       Graph API Bearer token (required)
--query TEXT              KQL search query (required)
--folder FOLDER           Restrict to folder (optional)
--limit N                 Max results (default: 20, max: 50)
outlook_send.py
--graph-token TOKEN       Graph API Bearer token (required)
--to ADDRESSES            Comma-separated recipient emails (required)
--subject TEXT            Email subject (required)
--body TEXT               Email body content (required)
--cc ADDRESSES            Comma-separated CC addresses
--bcc ADDRESSES           Comma-separated BCC addresses
--body-type TYPE          "text" (default) or "html"
--importance LEVEL        "low", "normal" (default), or "high"
--no-save-to-sent         Do not save to Sent Items
outlook_reply.py
--graph-token TOKEN       Graph API Bearer token (required)
--message-id ID           Original message ID (required)
--action ACTION           "reply", "replyAll", or "forward"
--body TEXT               Reply/forward body content (required)
--to ADDRESSES            Recipient addresses (required for forward)
outlook_manage.py
--graph-token TOKEN       Graph API Bearer token (required)
--message-id ID           Message ID (required)
--action ACTION           "read", "unread", "move", "delete", "flag", "unflag"
--folder FOLDER           Destination folder (required for move)
outlook_attachments.py
--graph-token TOKEN       Graph API Bearer token (required)
--message-id ID           Message ID (required)
--download ATTACHMENT_ID  Download a specific attachment (optional)
--output-dir DIR          Directory for downloaded file (default: /tmp)

Safety

Always show the user the draft (recipients, subject, body preview) and get explicit confirmation before calling outlook_send.py, outlook_reply.py, or outlook_manage.py --action delete.

KQL Search Syntax

Use KQL (Keyword Query Language) with outlook_search.py:

"quarterly report"                # Subject, body, or attachment name
from:jane.doe@example.com        # From a specific sender
to:john@example.com              # Sent to someone
subject:"weekly standup"          # In subject line
hasattachment:true                # Has attachments
received>=2026-04-01              # Received after date
from:jane subject:report          # Combined filters

Note: $orderby is not supported with $search — results are returned by relevance.

Key Concepts

Folder names — Use well-known names (Inbox, SentItems, Drafts, DeletedItems, Archive, JunkEmail) or folder IDs from outlook_folders.py.

Message IDs — Long opaque strings (e.g., AAMkAD...). Get from outlook_messages.py or outlook_search.py, then use with outlook_read.py, outlook_reply.py, outlook_manage.py, outlook_attachments.py.

Conversation threading — Each message has a conversationId. To see a full email thread: read one message, note its conversationId, then search/filter for other messages in that conversation.

HTML bodies — outlook_read.py converts HTML to plain text by default. Use --format html to get the raw HTML.

Time parameters — Accept both YYYY-MM-DD and full ISO 8601 (2026-04-13T09:00:00Z).

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

Error Handling

ErrorCauseFix
401 UnauthorizedToken expiredAuto-run sig login (no user prompt needed), retry
403 ForbiddenInsufficient permissionsCheck Graph API permissions (Mail.Read, Mail.Send)
404 Not foundInvalid message/folder IDVerify ID from a list or search
429 Too Many RequestsRate limitedWait and retry
MISSING_ARGSRequired arguments missingCheck script --help

Workflow Examples

Check inbox (recent unread emails)
  1. sig run ms-graph -- bash -c 'python3 scripts/outlook_messages.py --graph-token "$SIG_MS_GRAPH_ACCESS_TOKEN" --unread-only --limit 10'
Read a specific email
  1. List messages to find the ID: sig run ms-graph -- bash -c 'python3 scripts/outlook_messages.py --graph-token "$SIG_MS_GRAPH_ACCESS_TOKEN" --limit 5'
  2. Read full content: sig run ms-graph -- bash -c 'python3 scripts/outlook_read.py --graph-token "$SIG_MS_GRAPH_ACCESS_TOKEN" --message-id "$MSG_ID"'
Search for emails
  1. sig run ms-graph -- bash -c 'python3 scripts/outlook_search.py --graph-token "$SIG_MS_GRAPH_ACCESS_TOKEN" --query "from:jane.doe@example.com subject:report"'
Send an email
  1. Show draft to user and get confirmation
  2. sig run ms-graph -- bash -c 'python3 scripts/outlook_send.py --graph-token "$SIG_MS_GRAPH_ACCESS_TOKEN" --to "jane.doe@example.com" --subject "Meeting follow-up" --body "Hi Jane, ..."'
Reply to an email
  1. Read the email first: sig run ms-graph -- bash -c 'python3 scripts/outlook_read.py --graph-token "$SIG_MS_GRAPH_ACCESS_TOKEN" --message-id "$MSG_ID"'
  2. Show reply draft to user and get confirmation
  3. sig run ms-graph -- bash -c 'python3 scripts/outlook_reply.py --graph-token "$SIG_MS_GRAPH_ACCESS_TOKEN" --message-id "$MSG_ID" --action reply --body "Thanks, sounds good!"'
Forward an email
  1. Show forward draft to user and get confirmation
  2. sig run ms-graph -- bash -c 'python3 scripts/outlook_reply.py --graph-token "$SIG_MS_GRAPH_ACCESS_TOKEN" --message-id "$MSG_ID" --action forward --body "FYI" --to "colleague@example.com"'
Download an attachment
  1. List attachments: sig run ms-graph -- bash -c 'python3 scripts/outlook_attachments.py --graph-token "$SIG_MS_GRAPH_ACCESS_TOKEN" --message-id "$MSG_ID"'
  2. Download: sig run ms-graph -- bash -c 'python3 scripts/outlook_attachments.py --graph-token "$SIG_MS_GRAPH_ACCESS_TOKEN" --message-id "$MSG_ID" --download "$ATTACHMENT_ID" --output-dir ~/Downloads'
Check mail folders
  1. sig run ms-graph -- bash -c 'python3 scripts/outlook_folders.py --graph-token "$SIG_MS_GRAPH_ACCESS_TOKEN" --include-children'

© 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 18 other files (scripts, references) in skills/outlook of sigcli/sigcli.

  • SKILL.md
  • references/provider-config.yaml
  • scripts/outlook_attachments.py
  • scripts/outlook_folders.py
  • scripts/outlook_manage.py
  • scripts/outlook_messages.py
  • scripts/outlook_read.py
  • scripts/outlook_reply.py
  • scripts/outlook_search.py
  • scripts/outlook_send.py
  • scripts/requirements.txt
  • tests/test_outlook_attachments.py
  • tests/test_outlook_folders.py
  • tests/test_outlook_manage.py
  • tests/test_outlook_messages.py
  • tests/test_outlook_read.py
  • tests/test_outlook_reply.py
  • tests/test_outlook_search.py
  • … and 1 more

Open the folder on GitHubat commit 9ba8b35

Used in 1 other repository

We found 1 copy of this SKILL.md (exact, near-identical or edited) in other folders, from 1 other GitHub owner. This page covers the copy in sigcli/sigcli, which our catalogue first saw on October 7, 2026.

Compare with similar skills

Outlook 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.

Outlook compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Outlook this skillsigcli/sigcli2931 repos~2.6kAutomated safety check: PassMIT
Write Like Me Bootstrapjxnl/personal-monorepo-template562—~1.1kAutomated safety check: PassNone
Email Draftingmgonto/executive-assistant-skills118—~2.8kAutomated safety check: PassNone
Oc Statusanthropics/claude-for-legal9.6k2 repos~2.1kAutomated safety check: PassApache-2.0
Gmail Reply via gwsgoogleworkspace/cli31k—~655Automated safety check: PassApache-2.0
Executive AssistantTheCraigHewitt/hermes-chief-of-staff104—~1kAutomated safety check: PassMIT

Similar skills

  • Write Like Me Bootstrap

    jxnl/personal-monorepo-template

    Bootstrap a durable "write like me" skill from the user's own Slack and email writing.

    562 GitHub stars~1.1k tokensUpdated 3 mo ago
    Writing & ContentAuto-check passed
  • Email Drafting

    mgonto/executive-assistant-skills

    Draft email replies for Gonto's Gmail accounts (m@gon.to, gonto@hypergrowthpartners.com).

    118 GitHub stars~2.8k tokensUpdated 7 mo ago
    Productivity & AutomationAuto-check passed
  • Oc Status

    anthropics/claude-for-legal

    Official

    Generate weekly status-request email drafts to outside counsel across the active portfolio — markdown per matter, plus Gmail drafts when the MCP is available.

    9.6k GitHub starsUsed in 2 repos~2.1k tokens
    Writing & ContentAuto-check passed
  • Gmail Reply via gws

    googleworkspace/cli

    Replies to a Gmail message from the gws CLI with automatic threading, plus CC, BCC, extra recipients, attachments, HTML bodies and draft or dry-run modes.

    31k GitHub stars~655 tokensUpdated yesterday
    Productivity & AutomationAuto-check passed
  • Executive Assistant

    TheCraigHewitt/hermes-chief-of-staff

    Triage inbox, draft emails, manage calendar, schedule meetings, handle routine communications.

    104 GitHub stars~1k tokensUpdated 6 mo ago
    Productivity & AutomationAuto-check passed
  • Email Voice Profile

    yc-software/qm

    Build (or refresh) a voice profile of how the user writes email, from their own sent Gmail.

    15k GitHub stars~856 tokensUpdated today
    Writing & ContentAuto-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 starsUsed in 1 repo~2.8k tokens
    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 starsUsed in 1 repo~2k tokens
    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 starsUsed in 1 repo~3.1k tokens
    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 starsUsed in 1 repo~3.1k tokens
    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 starsUsed in 1 repo~2.1k tokens
    Auto-check passed
  • V2ex

    sigcli/sigcli

    Interact with V2EX (v2ex.com) — browse hot and latest topics, read topic details and replies, search posts, create topics, reply to discussions, thank posts, favorite topics/nodes, follow members…

    293 GitHub starsUsed in 1 repo~2.6k tokens
    Auto-check passed

Questions about Outlook

What does Outlook do?

Interact with Outlook email — read inbox, send emails, search messages, reply/forward, manage folders, download attachments. Outlook is an agent skill from sigcli/sigcli. Interact with Outlook email — read inbox, send emails, search messages, reply/forward, manage folders, download attachments.

When should I use Outlook?

Outlook fits situations like: the user mentions email; unread messages.

How do I install Outlook in Claude Code?

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

How do I install Outlook in Codex?

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

Can I use Outlook 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 outlook -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/outlook, .gemini/skills/outlook, .github/skills/outlook and .opencode/skills/outlook in your project.

What does Outlook need to run?

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

Does Outlook 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 Outlook 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 Outlook use?

Outlook 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 Outlook use?

About 2.6k tokens (SKILL.md is roughly 10k 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 181 tokens, read only when the agent opens those files.

What are the alternatives to Outlook?

Skills that share tags, products or a category with Outlook: Write Like Me Bootstrap (jxnl/personal-monorepo-template, 562 stars), Email Drafting (mgonto/executive-assistant-skills, 118 stars), Oc Status (anthropics/claude-for-legal, 9.6k stars) and Gmail Reply via gws (googleworkspace/cli, 31k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Outlook?

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.