admin-meeting-prep · git:20260918.2429d96 · 2026-09-18 · sha256 75322a47cb6fdbf1
admin-meeting-prep git:20260918.2429d96A
Immutable. This exact content never changes and is served at /api/v1/blob/75322a47cb6fdbf1.
--- name: admin-meeting-prep sheetId: "3.03" description: "A scheduled, auto-running admin-meeting-prep assistant: every day at 9 AM it scans meetings within the next 7 days and sends action reminders; every day at 3 PM it sends a full briefing for the next day's meetings. Notifications are sent to yourself via Google Chat. No manual trigger needed; does not handle post-meeting follow-up." category: operations project: admin-meeting-prep platform: claude status: WIP author: Jane Liao input: "None (scheduled auto-trigger; reads Google Calendar and Gmail)" process: "9am cron: scan the 7-day calendar → send action reminders to Google Chat | 3pm cron: scan Gmail for attendee background → send briefing to Google Chat" output: "Google Chat self-message: an action checklist in the morning, a structured briefing in the afternoon" synergy: [] type: agent skills: ["admin-meeting-note"] house-style: bound --- # Meeting Prep ```bash npx skills add https://github.com/peter-tu-zynkr/zynkr-skill-builder --skill admin-meeting-prep ``` A admin-meeting-prep assistant that runs automatically twice a day: at 9 AM it tells you which meetings in the coming week need advance preparation, and at 3 PM it sends a full briefing for the next day's meetings — including attendee background, a summary of recent email exchanges, and suggested prep items. Notifications go straight into Google Chat, no manual trigger required. --- ## Two Scheduled Modes | Schedule | Time | Function | |------|------|------| | **Morning Scan** | Daily 09:00 | Scan meetings in the next 7 days → send action reminders | | **Afternoon Briefing** | Daily 15:00 | Scan the next day's meetings → send a full briefing | --- ## Mode A — Morning Scan (triggered at 09:00) ### Step A1 — Scan Google Calendar Read all calendar events within the next 7 days. Use `mcp__google_workspace__get_events`: - `user_google_email`: the user's email - `time_min`: today 00:00 - `time_max`: today + 7 days 23:59 Filter criteria: - Keep only events that have other attendees (not personal block time) - Exclude all-day events - Exclude cancelled events ### Step A2 — Send Action Reminders to Google Chat For each qualifying meeting, list the actions that need to be taken. Decision logic: - Within 1 day from now → `🔴 明天!請確認是否有準備` - 2–3 days out → `🟡 本週內,建議開始準備` - 4–7 days out → `🟢 本週末前留意` Output format (Google Chat self-message): ``` 📅 本週會議 Action 清單|[日期] 🔴 明天 • [會議名稱] [時間] — 與會者:[人名] → 動作:確認議程 / 回顧相關 email 🟡 2–3 天內 • [會議名稱] [時間] — 與會者:[人名] → 動作:預先準備資料 🟢 4–7 天內 • [會議名稱] [時間] → 動作:備查 如無特定會議 → 發送「📅 本週無多人會議,保持待命。」 ``` Use `mcp__google_workspace__google_chat_send_self_message` (requires Peter to wire up the Google Chat API on his end). --- ## Mode B — Afternoon Briefing (triggered at 15:00) ### Step B1 — Get the Next Day's Meetings Use `mcp__google_workspace__get_events`: - `time_min`: tomorrow 00:00 - `time_max`: tomorrow 23:59 Apply the same filtering as Mode A to obtain `TOMORROW_MEETINGS[]`. If there are no meetings → send "✅ 明天沒有多人會議,無需準備。" and stop. ### Step B2 — Gather Gmail Background For each attendee of each meeting, search recent email exchanges. Use `mcp__google_workspace__search_gmail_messages`: - query: `from:[attendee_email] OR to:[attendee_email]` - time range: the past 30 days Compile for each attendee: - Subjects of the most recent 3–5 emails + a one-line summary each - Whether there are any unanswered to-dos (detect keywords like 「請確認」, 「麻煩回覆」, "waiting for", etc.) ### Step B3 — Generate and Send the Briefing Generate one Google Chat message per meeting: ``` 📋 明日會議 Briefing|[會議名稱] 時間:[start_time] 與會者:[人名清單] 🎯 會議目的 [從 description 或 title 推斷;無法判斷則標「未知,建議確認」] 👥 與會者背景 • [名字]:[近期互動摘要 / 職稱(若已知)] 📧 近期相關 Email(最多 5 筆) • [日期] [主旨] — [一句話摘要] ⚠️ 待確認事項 • [未回覆 / 懸而未決的項目] ✅ 建議進場前確認 1. [問題或資料] 2. [問題或資料] ``` Send one independent message per meeting. --- ## Inputs | Parameter | Default | Description | |------|--------|------| | `SCAN_DAYS` | 7 | How many days ahead the morning scan covers | | `EMAIL_LOOKBACK_DAYS` | 30 | How many days back to search Gmail | --- ## Outputs | Schedule | Output | |------|------| | 09:00 | Google Chat self-message: a 7-day action checklist | | 15:00 | Google Chat self-message: one briefing per meeting for the next day | --- ## Limitations - **Google Chat MCP not yet wired up**: currently the google_workspace MCP supports Gmail / Drive / Calendar; Google Chat requires Peter to separately integrate the Chat API on his end - Does not support LINE / Slack or other chat tools - If an attendee has no Gmail exchange history, the background field shows "無歷史記錄" - Scheduled triggering requires implementation via a cron job or the Claude Code schedule skill ## House style Writing style is **not owned by this file**. The house voice lives in two Google Docs under `[@] 寫作指南` (`12DBdFz3SK22ie9im_ThFMI7IBRXsTZsV`), read at runtime: - 《[2.0] Zynkr 通用風格指南 House Voice》 `10bOIQwRm9Pxwgct4hlwCwK_B4Pipai1HqBPZKzyRHSE` — the universal core, plus the addendum for this surface - 《[3.2] 禁用詞清單 Forbidden Words》 `1N5sHLP4qzmmhpCGsi6KElxi1z0MFe4QZ0Q_35T10Uyg` Read both before producing client- or reader-facing text, and scan the draft against 《[3.2]》 before handing it over. If Drive is unreachable, say so in the output rather than proceeding unchecked. Never re-implement either list inside this file.