본문으로 건너뛰기
cccskills
무료GitHub에 공개

outlook

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
설치 방법 보기

포함된 파일(19)

  • SKILL.md10.0 KB
  • references/provider-config.yaml721 B
  • scripts/outlook_attachments.py3.2 KB
  • scripts/outlook_folders.py2.8 KB
  • scripts/outlook_manage.py2.7 KB
  • scripts/outlook_messages.py3.4 KB
  • scripts/outlook_read.py3.7 KB
  • scripts/outlook_reply.py3.3 KB
  • scripts/outlook_search.py2.9 KB
  • scripts/outlook_send.py3.1 KB
  • scripts/requirements.txt17 B
  • tests/test_outlook_attachments.py3.5 KB
  • tests/test_outlook_folders.py2.7 KB
  • tests/test_outlook_manage.py2.6 KB
  • tests/test_outlook_messages.py2.9 KB
  • tests/test_outlook_read.py3.5 KB
  • tests/test_outlook_reply.py2.3 KB
  • tests/test_outlook_search.py2.1 KB
  • tests/test_outlook_send.py2.9 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

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.

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)

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

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'

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

bilibili

무료

Interact with Bilibili (B站) — browse trending videos, view video details, read comments, search videos and users, view user profiles, like, coin, and favorite videos. Use this skill whenever the user mentions Bilibili, B站, wants to browse Bilibili content, search Bilibili videos, read Bilibili comments, look up Bilibili users, or interact with Bilibili content. Also trigger when the user pastes a Bilibili URL (e.g. bilibili.com/video/BV...) or mentions a BV ID.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

sigcli/sigcli2922026년 9월 28일 업데이트

douyin

무료

Provide authenticated cookies for Douyin (抖音/TikTok China) — two providers: douyin (www.douyin.com for scraping) and douyin-live (live.douyin.com for livestream). Use this skill whenever the user needs Douyin cookies for scraping tools like DouYin_Spider, or needs to authenticate with Douyin services. Trigger when the user mentions 抖音, Douyin, TikTok China, douyin cookies, or wants to use tools that require Douyin login cookies.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

sigcli/sigcli2922026년 9월 28일 업데이트

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. Use this skill whenever the user mentions Hacker News, HN, YCombinator news, ycombinator.com, news.ycombinator.com, wants to browse tech news, read HN discussions, search HN posts, or look up HN users. Also trigger when the user pastes an HN URL (e.g. news.ycombinator.com/item?id=12345). Keywords: Hacker News, HN, YC, ycombinator, tech news, Show HN, Ask HN, HN front page.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

sigcli/sigcli2922026년 9월 28일 업데이트

linkedin

무료

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 follow/unfollow users. Use this skill whenever the user mentions LinkedIn, wants to search for jobs or people, read their LinkedIn feed, view a profile, get job details, create a post, like or comment on content, send a connection request, or follow someone. Also trigger when the user pastes a LinkedIn URL (e.g. linkedin.com/in/..., linkedin.com/jobs/view/...) or mentions LinkedIn networking.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

sigcli/sigcli2922026년 9월 28일 업데이트

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

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

sigcli/sigcli2922026년 9월 28일 업데이트

reddit

무료

Interact with Reddit — browse subreddits, read posts and comments, search content, view user profiles, post comments, vote, save posts, subscribe to subreddits. Use this skill whenever the user mentions Reddit, r/, subreddit, wants to browse Reddit posts, read Reddit discussions, search Reddit, look up Reddit users, or interact with Reddit content. Also trigger when the user pastes a Reddit URL (e.g. reddit.com/r/programming/...) or mentions a subreddit name.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

sigcli/sigcli2922026년 9월 28일 업데이트

sigcli의 스킬 모두 보기

이 스킬의 문제 신고