Skip to main content

m365-graph

Microsoft 365 surface — READ Frank's mailbox / Wes's calendar / OneDrive (shift reports, SOPs) AND a strict H-I-T-L workflow to draft and send an email (e.g. brief Wes on the morning incident).

Jump to install

Source facts

Repository
aiappsgbb/kratos-agent
Last source activity
June 9, 2026 at 14:53
Detected SKILL.md language
English
Stars
24
Forks
22

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
m365-graph
description
Microsoft 365 surface — READ Frank's mailbox / Wes's calendar / OneDrive (shift reports, SOPs) AND a strict H-I-T-L workflow to draft and send an email (e.g. brief Wes on the morning incident).
enabled
true
## Instructions This skill covers both reads and the email H-I-T-L. They share an MCP but, like the servicenow skill, the gate makes them very different tools. ## Section A — Reads (no confirmation needed) | User intent | Tool | |---|---| | Resolve `EMP-*` ↔ display name ↔ email, presence, OOO | `m365_get_user`, `m365_get_user_presence` | | List people in Plant Operations / under Wes | `m365_list_users` | | Search Frank's mailbox (recent shift reports, supplier notes, QA threads) | `m365_search_messages` | | Read one message in full | `m365_get_message` | | Read a whole thread | `m365_get_thread` | | What's on Wes's calendar — is he free for a quick brief? | `m365_list_events`, `m365_get_event` | | Find a free 15-min slot for Frank + Wes + Lucia | `m365_find_meeting_times` | | Search SharePoint / OneDrive (SOPs, OEE workbooks, supplier MSAs) | `m365_search_files`, `m365_get_file` | | Frank's Teams chats with the shift / with Wes | `m365_list_chats`, `m365_search_chat_messages` | ### Read conventions - The m365 user record carries `presence` and `ooo_message` — check these before suggesting "I'll email Wes" if Wes is OOO; cite the OOO message and propose the coverage person. - Frank's `mail` is `frank.delgado@olympus.example.com`; Wes's is `wesley.park@olympus.example.com`. These match `workday.work_email` exactly. - **Some legacy m365 content (chats, files, events) was created when Frank was tagged as IT** — don't be surprised to see "Service Desk" themes in older records. The current role (and the role on every new draft) is **Plant Floor Supervisor**. ## Section B — Email (H-I-T-L) ### Pattern — strict three-step #### Step 1 — propose the draft Build the email body from the situation. Lead with the metric; include the CI / INC / PO ids; keep it short. **Never** send unsolicited tone. ``` I'll draft this email to Wes: - To: Wesley Park (wesley.park@olympus.example.com) - Cc: (none) - Subject: Line 3 incident this morning — DEV-3001 spindle, INC-7012 logged - Body: Wes, Two-hour update on Line 3: • OEE 49% vs target 80% — declining all week (81 → 49 across 7 days). • Spindle DEV-3001 vibration climbed 1.8 → 5.4 mm/s in the last 24h and crossed the 4.5 alarm. Four micro-stops (DT-3001..DT-3004). • PO-9003 is at 20% scrap on Model A. Two rejected lots from Northbridge (V-1201, already QA-blocked) tied to those stops. • Logged maintenance work order INC-7012 with Plant Maintenance (AGT-401 Reggie Bellamy). Brief is at /tmp/line-3-incident-brief- 2026-06-09.pdf if you want the chart. I'll keep Line 3 on Devon and reassign Lucia to Line 1 backfill until the spindle is inspected. Calling QA on the Northbridge lots. Frank Confirm to send? (yes / edit / no) ``` Then call `m365_draft_message` so the Draft id exists in the mailbox, and `ask_user`. **Wait.** Do not call `m365_send_message`. #### Step 2 — execute on explicit "yes" - **yes** → `m365_send_message` with the Draft id - **edit body / edit subject / cc Aisha** → revise, re-confirm - **no** → stop; the Draft stays in Drafts folder, won't send #### Step 3 — receipt ``` Sent: MSG-30041 · to wesley.park@olympus.example.com · Subject: Line 3 incident this morning… ``` ### Constraints - **Never** call `m365_send_message` without an explicit `yes` after the rendered draft. No batching sends. - **Never** send to external addresses (anything not `@olympus.example.com`) without surfacing that as a flag and re-confirming. - **Always include the PDF path** when there is one — Frank's a manager-of-managers; he reads briefs. - **Tone:** Frank's voice is direct and operational. No "I hope this email finds you well". Bullet → metric → action. ## Section C — When NOT to use - Numbers / OEE / telemetry → **azure-iot** (no need to read it from email) - Production order / vendor / material → **sap-s4** - Logging a maintenance ticket → **servicenow** (maintenance work order section) - Building the brief PDF that the email links to → **incident-brief-pdf**
View on GitHub